package com.gun.management.module.task.service.taskInfo;

import java.util.*;
import com.gun.management.module.task.controller.admin.taskInfo.vo.*;
import com.gun.management.module.task.controller.app.vo.AppTaskAuditInfoRespVO;
import com.gun.management.module.task.controller.app.vo.AppTaskInfoPageReqVO;
import com.gun.management.module.task.controller.app.vo.AppTaskInfoRespVO;
import com.gun.management.module.task.controller.app.vo.AppTaskRetRespVO;
import com.gun.management.module.task.dal.dataobject.taskInfo.TaskInfoDO;
import com.gun.management.framework.common.pojo.PageResult;
import com.gun.management.framework.common.pojo.PageParam;
import jakarta.validation.Valid;

/**
 * 任务信息 Service 接口
 *
 * @author 测试账号
 */
public interface TaskInfoService {

    /**
     * 创建任务信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createInfo(@Valid TaskInfoSaveReqVO createReqVO);

    /**
     * 更新任务信息
     *
     * @param updateReqVO 更新信息
     */
    void updateInfo(@Valid TaskInfoSaveReqVO updateReqVO);

    /**
     * 删除任务信息
     *
     * @param id 编号
     */
    void deleteInfo(Long id);

    /**
     * 获得任务信息
     *
     * @param id 编号
     * @return 任务信息
     */
    TaskInfoDO getInfo(Long id);

    public TaskInfoRespVO getTaskDetailById(Long id);

    public AppTaskInfoRespVO getDetailById(Long id );

    /**
     * 获得任务信息分页
     *
     * @param pageReqVO 分页查询
     * @return 任务信息分页
     */
    PageResult<TaskInfoRespVO> getInfoPage(TaskInfoPageReqVO pageReqVO);



    /**
     * 修改状态
     *
     * @param id      编号
     * @param categoryId      类型
     * @param enabled 状态
     */
    void updateStatusEnabled(Long id, Long categoryId, Boolean enabled);

    /**
     * 分页返回任务列表
     * @param reqVO
     * @return
     */
    public PageResult<AppTaskInfoRespVO> getTaskPageList(AppTaskInfoPageReqVO  reqVO);

    /**
     * 根据活动id来获取用户是否有条件获取积分
     * @param taskId
     * @return
     */
    public AppTaskRetRespVO getTaskRewardPointResult(Long taskId);




}